from optparse import *
from pprint import pprint
from types import DictType
+from getpass import getpass
MB = 1024 * 1024
'%(type)-10s'
VDI_LIST_FORMAT = '%(name_label)-18s %(uuid)-36s %(virtual_size)-8s '\
'%(sector_size)-8s'
-LOGIN = ('atse', 'passwd')
COMMANDS = {
'host-info': ('', 'Get Xen Host Info'),
def _connect(*args):
- server = ServerProxy('httpu:///var/run/xend/xmlrpc.sock')
- session = execute(server.session.login_with_password, *LOGIN)
+ server = ServerProxy('httpu:///var/run/xend/xmlrpc.sock')
+ login = raw_input("Login: ")
+ password = getpass()
+ creds = (login, password)
+ session = execute(server.session.login_with_password, *creds)
host = execute(server.session.get_this_host, session)
return (server, session)
def xapi_host_info(*args):
server, session = _connect()
- hosts = execute(server.Host.get_all, session)
+ hosts = execute(server.host.get_all, session)
for host in hosts: # there is only one, but ..
- hostinfo = execute(server.Host.get_record, session, host)
+ hostinfo = execute(server.host.get_record, session, host)
print HOST_INFO_FORMAT % ('Name', hostinfo['name_label'])
print HOST_INFO_FORMAT % ('Version', hostinfo['software_version'])
print HOST_INFO_FORMAT % ('CPUs', len(hostinfo['host_CPUs']))
#============================================================================
import time
+import PAM
from xen.xend import uuid
from xen.xend.XendError import *
def __init__(self):
self.sessions = {}
- self.users = {'atse': 'passwd'}
def init(self):
pass
if type(session) == type(str()):
return (session in self.sessions)
return False
-
+
def is_authorized(self, username, password):
- if username in self.users and self.users[username] == password:
+ pam_auth = PAM.pam()
+ pam_auth.start("login")
+ pam_auth.set_item(PAM.PAM_USER, username)
+
+ def _pam_conv(auth, query_list, user_data):
+ resp = []
+ for i in range(len(query_list)):
+ query, qtype = query_list[i]
+ if qtype == PAM.PAM_PROMPT_ECHO_ON:
+ resp.append((username, 0))
+ elif qtype == PAM.PAM_PROMPT_ECHO_OFF:
+ resp.append((password, 0))
+ else:
+ return None
+ return resp
+
+ pam_auth.set_item(PAM.PAM_CONV, _pam_conv)
+
+ try:
+ pam_auth.authenticate()
+ pam_auth.acct_mgmt()
+ except PAM.error, resp:
+ return False
+ except Exception, e:
+ log.warn("Error with PAM: %s" % str(e))
+ return False
+ else:
return True
- return False
def get_user(self, session):
try: